package com.maozzi.api.user;

import com.maozzi.api.user.model.TokenDTO;
import com.maozzi.api.user.model.UserDTO;
import com.maozzi.common.exception.BizException;
import com.maozzi.common.model.PageDTO;
import com.maozzi.common.model.PageParam;

import java.util.List;

/**
 * 用户
 *
 * @author maozi
 */
public interface UserService {
    /**
     * 用户注册
     *
     * @param dto 参数
     */
    void signup(UserDTO dto) throws BizException;

    /**
     * 获取用户
     *
     * @param userId 用户id
     * @return 用户
     * @throws BizException 业务异常
     */
    UserDTO getUser(Long userId) throws BizException;

    /**
     * 通过用户名和密码登录
     *
     * @param name     名称
     * @param password 密码
     * @return 返回
     * @throws BizException 业务异常
     */
    TokenDTO signIn(String name, String password) throws BizException;

    /**
     * 分页查询用户列表
     *
     * @param dto       查询参数
     * @param pageParam 分页参数
     * @return 返回
     * @throws BizException 业务异常
     */
    PageDTO<UserDTO> page(UserDTO dto, PageParam pageParam) throws BizException;

    /**
     * 分页查询管理员列表
     *
     * @param dto       查询参数
     * @param pageParam 分页参数
     * @return 返回
     * @throws BizException 业务异常
     */
    PageDTO<UserDTO> adminPage(UserDTO dto, PageParam pageParam) throws BizException;

    /**
     * 添加管理员（批量）
     *
     * @param userIds 用户ID
     * @return 返回
     * @throws BizException 业务异常
     */
    Boolean addAdmin(List<Long> userIds) throws BizException;


}
